<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>无序列表</title>
</head>
<body>
<!--
    ul:表示无序列表的父标签
    li:表示列表中的每一个选项
    无序列表中的选项是没有顺序,默认使用实心圆进行标记
    可以通过type属性更改标记
    type:指定无序列表的选项标记,其值有三个
        disc:实心圆,默认值
        circle:空心圆
        square:实心方块
        none:没有任何标记
-->
<h3>面向对象三大特征</h3>
<ul type="disc">
    <li>封装</li>
    <li>继承</li>
    <li>多态</li>
</ul>

<h3>抽象类与接口的区别</h3>
<ul type="circle">
    <li>接口中只能存在静态属性,抽象类可以有普通属性</li>
    <li>JDK8之前接口中只能存在抽象方法,抽象类可以有普通方法</li>
    <li>接口中不能有构造方法,抽象类中可以有构造方法</li>
    <li>接口支持多继承,抽象类只支持单继承</li>
</ul>
<h3>wait与sleep的区别</h3>
<ul type="square">
    <li>wait进入等待池,sleep进入阻塞状态</li>
    <li>调用对象的wait方法时,必须获取对象锁,sleep是一个静态方法,不需要锁</li>
    <li>wait如果没有设置定时唤醒,需要其他线程进行唤醒,sleep如果没有设置定时醒可以被其他线程中断</li>
    <li>wait会释放锁资源,sleep不会释放锁资源</li>
</ul>

<h3>equals方法与==的区别</h3>
<ul type="none">
    <li>==用于判断是否是同一个对象,比较的是栈中存储的数据</li>
    <li>equals在Object对象中本质上就是==。因此,equals方法在没有被重写时与==一致</li>
    <li>equals被重写后,会根据重写方法的规则进行比较。例如:字符串默认重写的equals方法就是只比较值的大小,不关心地址</li>
</ul>
</body>
</html>